﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.Diagnostics;

namespace ProjetoGrupo2
{
    class Menu : SceneBase // A CLASSE MENU ESTA HERDANDO OS CODIGOS DA SCENEBASE;
    {
        MouseState mouse, oldMouse;
        Texture2D texturaMenu;

        AnimatedObject botaoPlay;
        AnimatedObject botaoHistoria;
        AnimatedObject botaoCreditos;
        AnimatedObject botaoSair;
        Objeto2D logo;

        private Song song;
        private SoundEffect effect;

        public override void start() // VARIAVEL QUE INICIA ESSA CLASSE, E CARREGA OS ITENS DA CLASSE;
        {
            Game1.Self.IsMouseVisible = true;// DIZ QUA O MOUSE ESTA VISIVEL;

            //CRIAÇÃO DA ANIMAÇÃO DE TROCA DE COR DE BOTAO, FEITA POR ALTERAÇÃO DE SPRITE;

            ProjetoGrupo2.AnimatedObject.AnimationStructure animationMudarCor = new ProjetoGrupo2.AnimatedObject.AnimationStructure();
            animationMudarCor.frameCount = 1;//CONTADOR DE FRAMES
            animationMudarCor.frameWidth = 135; // LARGURA DO SPRITE
            animationMudarCor.frameHeight = 36; // ALTURA DO SPRITE
            animationMudarCor.framePerSecond = 1; // VELOCIDADE DOS QUADROS NA TROCA DE TELA
            animationMudarCor.X = 135;
            animationMudarCor.Y = 0;

            texturaMenu = (Game1.Self.Content.Load<Texture2D>("menu")); // CARREGADOR DE IMAGEM TIPO TEXTURA

            botaoPlay = new AnimatedObject(Game1.Self.Content.Load<Texture2D>("botao1"), 134, 36); // CARREGADOR TIPO AnimacaoObject;
            botaoPlay.posicao.X = 300;
            botaoPlay.posicao.Y = 150;
            botaoPlay.listaAnimations.Add("mudarCor", animationMudarCor);

            botaoHistoria = new AnimatedObject(Game1.Self.Content.Load<Texture2D>("botao2"), 134, 36);
            botaoHistoria.posicao.X = 300;
            botaoHistoria.posicao.Y = 200;
            botaoHistoria.listaAnimations.Add("mudarCor", animationMudarCor);

            botaoCreditos = new AnimatedObject(Game1.Self.Content.Load<Texture2D>("botao3"), 134, 36);
            botaoCreditos.posicao.X = 300;
            botaoCreditos.posicao.Y = 250;
            botaoCreditos.listaAnimations.Add("mudarCor", animationMudarCor);

            botaoSair = new AnimatedObject(Game1.Self.Content.Load<Texture2D>("botao4"), 134, 36);
            botaoSair.posicao.X = 300;
            botaoSair.posicao.Y = 300;
            botaoSair.listaAnimations.Add("mudarCor", animationMudarCor);


            // logo = new Objeto2D(Game1.Self.Content.Load<Texture2D>(@"Imagens/logo")); // CARREGADOR TIPO Objeto2D
            //logo.posicao.X = 0;
            // logo.posicao.Y = 100;

            song = (Game1.Self.Content.Load<Song>(@"Sounds/DST-Alters"));// CARREGADOR DE SOM
           // effect = (Game1.Self.Content.Load<SoundEffect>(@"Sounds/button-20"));// CARREGADOR DE EFEITOS SONOROS

             MediaPlayer.Play(song); // o PLAYER DE AUDIO DO JOGO EXECUTARÁ A VARIAVEL SONG;
             MediaPlayer.IsRepeating = true; // O PLAYER IRA SEMPRE SE REPETIR;



        }

        public override void update(GameTime gameTime) // ATUALIZÇÃO DA CLASSE MENU;
        {
            // DEFINE O ESTADO DO MOUSE ATUAL E DO ANTIGO;

            oldMouse = mouse;
            mouse = Mouse.GetState();

            //SE O LOGO ESTIVER NUMA FORA DA TELA ELE FARA O LOGO ANDAR ATE O CENTRO DA TELA, E TODOS OS BOTÕES DA TELA ESTARÃO INVISIVEIS.

            //if (logo.posicao.X <= 300)
            //{
            //    logo.posicao.X += 4;
            //    botaoPlay.visible = false;
            //    botaoHistoria.visible = false;
            //    botaoCreditos.visible = false;
            //    botaoSair.visible = false;

            //}

            //    //SENÃO TODOS OS BOTÕES ESTARÃO VISIVEIS 

            //else
            //{
            //    botaoPlay.visible = true;
            //    botaoHistoria.visible = true;
            //    botaoCreditos.visible = true;
            //    botaoSair.visible = true;
            //}




            botaoPlay.calcularRetangulo();
            botaoPlay.Update(gameTime);

            // SE EXISTIR UMA COLISÃO DO PONTEIRO DO MOUSE COM O botaoPlay A INICIARA A ANIMAÇÃO DE TROCA DE COR;

            if (botaoPlay.collisionBounds.Contains(mouse.X, mouse.Y))
            {

                botaoPlay.ChangeAnimation("mudarCor");
            }

            //SENAO NAO EXISTIRA ANIMAÇÃO;
            else
            {

                botaoPlay.ChangeAnimation("default");
            }

            botaoHistoria.calcularRetangulo();
            botaoHistoria.Update(gameTime);


            if (botaoHistoria.collisionBounds.Contains(mouse.X, mouse.Y))
            {

                botaoHistoria.ChangeAnimation("mudarCor");
            }
            else
            {

                botaoHistoria.ChangeAnimation("default");
            }



            botaoCreditos.calcularRetangulo();
            botaoCreditos.Update(gameTime);


            if (botaoCreditos.collisionBounds.Contains(mouse.X, mouse.Y))
            {

                botaoCreditos.ChangeAnimation("mudarCor");
            }
            else
            {

                botaoCreditos.ChangeAnimation("default");
            }

            botaoSair.calcularRetangulo();
            botaoSair.Update(gameTime);


            if (botaoSair.collisionBounds.Contains(mouse.X, mouse.Y))
            {

                botaoSair.ChangeAnimation("mudarCor");
            }
            else
            {

                botaoSair.ChangeAnimation("default");
            }
            // SE O BOTÃO ESQUERDO DO MOUSE ESTIVER APERTADO E O O MOUSE ANTIGO FOR DIFERENTE DO ATUAL:

            if (mouse.LeftButton == ButtonState.Pressed && oldMouse != mouse)
            {
                //SE  O botaoPLAY SOFRER COLISÃO DO MOUSE, ELE FARA UMA TROCA DE TELA DE MENU PARA CONTROLES, E EXECUTARÁ UM EFEITO DE SOM.
                if (botaoPlay.collisionBounds.Contains(mouse.X, mouse.Y))
                {
                    SceneManager.setScene(new level1());
                    //effect.Play();
                }
                if (botaoHistoria.collisionBounds.Contains(mouse.X, mouse.Y))
                {
                    SceneManager.setScene(new Historia());
                    // effect.Play();
                }
                if (botaoCreditos.collisionBounds.Contains(mouse.X, mouse.Y))
                {
                    SceneManager.setScene(new Credito());// FUNÇÃO DE TROCA DE TELAS, DA CLASSE ATUAL PARA DETERMINADA CLASSE;
                   // effect.Play();
                }

                if (botaoSair.collisionBounds.Contains(mouse.X, mouse.Y))
                {
                    Process.GetCurrentProcess().Kill(); // COMANDO PARA FINALIZAR PROJETO, FUNÇÃO EXIT;
                }
            }
        }

        public override void draw(Microsoft.Xna.Framework.Graphics.SpriteBatch spriteBatch) // CLASS QUE DESENHA A TELA;
        {
             spriteBatch.Draw(texturaMenu, new Vector2(0, 0), Color.White);
            botaoPlay.Draw(spriteBatch);
            botaoHistoria.Draw(spriteBatch);
            botaoCreditos.Draw(spriteBatch);
            botaoSair.Draw(spriteBatch);
            //logo.Draw(spriteBatch);

        }

        public override void terminate() //so serve para liberar a memoria
        {
            Game1.Self.IsMouseVisible = false;
            MediaPlayer.Stop();
        }
    }
}
